package com.hbzhit.common.magicapi.function;

import com.alibaba.fastjson.JSON;
import com.hbzhit.common.utils.SpringContextUtils;
import com.hbzhit.modules.sys.entity.SysUserEntity;
import org.apache.shiro.SecurityUtils;
import org.springframework.stereotype.Component;
import org.ssssssss.magicapi.config.MagicFunction;
import org.ssssssss.script.annotation.Comment;
import org.ssssssss.script.annotation.Function;

import java.util.Date;

/**
 * 自定义函数
 *
 * @author DING
 * @version 1.0
 * @date 2021/4/2 15:14
 */
@Component  //注入到Spring容器中
public class CustomFunction implements MagicFunction {

    /**
     * 取当前时间
     * 脚本中直接使用 now();
     */
    @Function
    @Comment("取当前时间")
    public static Date now() {
        return new Date();
    }

    /**
     * 取当前登陆用户
     */
    @Function
    @Comment("取当前登陆用户")
    public static SysUserEntity currUser() {
        return (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
    }

    /**
     * 调用Service服务
     */
    @Function
    @Comment("调用Service服务")
    public static Object getService(@Comment("服务名") String serviceName) {
        return SpringContextUtils.getBean(serviceName);
    }

    /**
     * 对象转JSON字符串
     */
    @Function
    @Comment("对象转JSON字符串")
    public static String toJsonStr(@Comment("对象") Object obj) {
        return JSON.toJSONString(obj);
    }

    /**
     * JSON字符串转对象
     */
    @Function
    @Comment("对象转JSON字符串")
    public static Object toJsonObj(@Comment("对象") String str) {
        return JSON.parseObject(str);
    }
}
